#ifndef EDULISP_ANALYSER_HPP_
#define EDULISP_ANALYSER_HPP_

#include "edulisp_nametable.hpp"
// Класс элемента таблицы имен

#include <stack>
#include "edulisp.hpp"
// Локальные инклады

typedef int Head; // теперь пусть пока это побудет абстракцией

enum LexemeCategory { LC_NULL, LC_BRACK, LC_CBRACK, LC_DEFUN, LC_LAMBDA,
                      LC_COND, LC_ID, LC_GOTO };
enum HeadCategory { HC_NULL, HC_BRACKET, HC_LIST, HC_ID, HC_DEFUN,
                    HC_DEFUNARG, HC_LAMBDA, HC_IF, HC_IF_T, HC_IF_N };
enum PhraseCategory { PC_NULL, PC_PROG, PC_LIST, PC_ATOM, PC_DEFUN };

int Analyse(LexemeList& lLexemeList, NameTable& vNameTable);

#endif // EDULISP_ANALYSER_HPP_ INCLUDED
